07 - 平台选型与落地
本篇回答:这些东西凑一起该买谁、装谁、按什么顺序上。
本篇会用到的词:
| 词 | 意思 |
|---|---|
| ELv2 | Elastic License 2.0。允许自用和改,但禁止把它作为托管服务卖给第三方。不是 OSI 认定的开源许可 |
| open-core | 核心开源、企业功能闭源的模式。典型标志是仓库里有个 ee/ 目录,单独一份许可证 |
| NOASSERTION | gh api 返回的许可证字段值,意思是「自动识别不出来」,不等于没有协议。看到它必须自己去翻 LICENSE |
| 评测(eval) | 给模型输出打分。可以是规则、可以是另一个模型当裁判。它和追踪的关系是:追踪提供被打分的样本 |
一、先分清三类产品
选型最常见的混乱,是把不在同一层的东西放在一张表里比:
二、五个开源平台横评
数据日期 2026-08-21,许可证一栏是逐个打开仓库 LICENSE 文件读的,不是 gh api 的自动识别结果:
| 项目 | ★ | 许可证(实读) | 自建依赖 | 语义约定 | 侧重 |
|---|---|---|---|---|---|
langfuse/langfuse | 33,466 | 核心 MIT Expat;ee/、web/src/ee/、worker/src/ee/ 另有商业许可。版权持有人已变更为 ClickHouse, Inc. | ClickHouse ≥ 24.3 + Postgres + Redis + 对象存储 | 自有模型,两套约定都映射进来 | 全功能工程平台:追踪、评测、提示词管理、数据集 |
Arize-ai/phoenix | 11,128 | Elastic License 2.0 —— 非 OSI 开源,禁止作为托管服务转售 | SQLite 起步;生产建议 PostgreSQL ≥ 14 | OpenInference 原生 | 本地调试与评测,起步最轻 |
comet-ml/opik | 21,500 | Apache-2.0(整仓) | MySQL + Redis + ClickHouse + ZooKeeper + MinIO | OTel 兼容 | 追踪 + 评测 + 内置护栏服务 |
SigNoz/signoz | 31,890 | 核心 MIT Expat;ee/、cmd/enterprise/ 另有商业许可 | ClickHouse | OTel 原生 | 通用可观测栈,GenAI 是其中一块 |
mlflow/mlflow | 27,594 | Apache-2.0 | 可从文件后端起步 | 原生支持 GenAI 语义约定 | 已有 MLflow 的团队顺手接上 |
外加一个不在同一层的:
| 项目 | ★ | 许可证 | 说明 |
|---|---|---|---|
traceloop/openllmetry | 7,387 | Apache-2.0 | 只做埋点,不含后端。 它替代的是你手写的埋点代码,不是上面任何一个 |
2.1 许可证这一栏必须自己翻
gh api 对 Langfuse、Phoenix、SigNoz 返回的都是 NOASSERTION。翻完之后结论差异很大:
| 项目 | 自动识别 | 实际情况 | 对采购的影响 |
|---|---|---|---|
| Langfuse | NOASSERTION | 核心 MIT,ee/ 商业许可 | 自用没问题;要注意别不小心依赖了 ee/ 里的功能 |
| SigNoz | NOASSERTION | 核心 MIT,ee/ 商业许可 | 同上 |
| Phoenix | NOASSERTION | ELv2 | 自用可以;做成对外服务卖给第三方不行。做 PaaS 的团队要特别注意 |
Phoenix 那一行是三者里唯一有实质限制的。"开源"这个词在这里不成立 —— ELv2 不是 OSI 认定的开源许可,企业法务过审时按商业软件处理。
Opik 和 MLflow 是整仓 Apache-2.0,没有这层麻烦。
2.2 部署重量差得比想象中大
"装个 Langfuse 试试"和"装个 Phoenix 试试"是完全不同的两件事:
评估自建时按中间件套数算人力,不要按"一个应用"算。 五套中间件意味着五套备份策略、五套监控、五个版本升级窗口。
三、怎么判断"生产上真的有人在用"
star 数不行 —— 04 篇已经说过规范类仓库的 star 没有意义,平台类仓库也一样会被"看起来很酷"的项目刷高。四个更可靠的信号:
| 信号 | 怎么查 | 例子 |
|---|---|---|
| 有没有别的基础设施项目在生产路径上依赖它 | 读对方源码,不是读对方的 README | Envoy AI Gateway 的 internal/tracing/openinference/ 是完整实现,不是可选插件 |
| 有没有被 OTel 官方吸纳 | 看 contrib 仓库里有没有对应组件 | genainormalizerprocessor 内置了 openinference 和 openllmetry 两张映射表 —— 官方认为这两个值得专门支持 |
| 有没有资本层面的确认 | 收购、融资公告里的量化口径 | ClickHouse 于 2026-01-16 收购 Langfuse,公布数字:SDK 月安装 26M+、Docker 拉取 6M+、Fortune 500 里 63 家在用 |
| 架构能不能扛住量 | 读它的自建文档,看有没有队列和冷热分离 | Langfuse 的 S3 缓冲 + Redis 引用队列是为尖峰设计的;Phoenix 的 SQLite 起步显然不是 |
第四条最实用,因为它是你自己能验证的。一个平台如果让 SDK 直连数据库、没有中间队列,它在流量尖峰下一定会以超时的形式丢数据 —— 这与它的 star 数无关。
3.1 一个可以直接问供应商的问题
不管开源还是商业,有个问题能快速分辨"真在生产跑过"和"demo 做得好":
我们用了持久化执行框架,故障恢复时工作流会从头重放,同一个步骤在 trace 里会出现两次。你们怎么处理?
答得上来说明对方见过真实的 Agent 生产系统。这个问题在 Agent 持久化执行 · 05 篇也提到过,两边是同一个判据。
同类的还有:
- 一次执行跑了 40 分钟,你们的尾采样怎么办?(对应 05 篇 3.1 节)
- 我们不想让 prompt 落到你们的库里,有没有只存引用的模式?(对应 04 篇 5.2 节)
- 一次对话 60 轮,你们的 span 属性会不会被截断?(对应 04 篇 3.1 节)
四、按场景选
| 你的情况 | 选什么 |
|---|---|
| 本地开发,想先看看 trace 长什么样 | Phoenix。 pip install 或 docker run 就能起,OpenInference 原生。但注意 ELv2 |
| 要成本看板、多租户、提示词管理,且有人力运维 | Langfuse。 功能最全,被 Fortune 500 里 63 家用着;代价是四套中间件 |
| 已经有一整套 OTel + ClickHouse 可观测栈 | SigNoz 或 ClickStack。 别再单独立一套 LLM 平台,让 GenAI 数据和基础设施数据同库 |
| 团队本来就在用 MLflow 管模型 | MLflow Tracing。 生产用轻量的 mlflow-tracing 包, 它比全量 MLflow 小 95% |
| 法务对许可证有硬要求 | Opik 或 MLflow,整仓 Apache-2.0。Phoenix 的 ELv2 过不了"必须是 OSI 开源"这条 |
| 做 PaaS,要把可观测能力转售给客户 | 不能用 Phoenix(ELv2 明确禁止)。Langfuse / SigNoz 要避开 ee/ |
| 只缺埋点,后端已经有了 | OpenLLMetry 或 OpenInference,它们不是后端 |
| 多语言混合、要防绕过、要做全公司盘点 | OBI(03 篇)+ 网关侧采集(06 篇) |
五、落地顺序
按依赖关系,四步走。顺序不能颠倒 —— 后一步的价值建立在前一步已经做完的前提上:
六、全专题结论
- 埋点混用,不要二选一。 B/C 拿框架内部结构,D 拿不可伪造的账,A 补业务维度。四项独占能力分散在谱系的两端和中段,没有任何单一路线能覆盖全部。(02、03)
- 规范未稳定,把归一做在 Collector 里。 118 个
gen_ai.*属性全是development,genainormalizerprocessor是唯一能对历史数据也生效、改错了不用发版的位置。(04) - 内容默认不记,要记就外置。 prompt 记不记差 13 倍存储;记在 span 属性上还会和 尾采样的内存直接冲突。(04、05)
- 采样策略要按 Agent 的特征配。 出错的、慢的、步数异常的、token 超量的必留 —— 后两条传统 APM 里没有对应概念。(05)
- 成本口径放网关,报表走指标。 应用侧传入的身份可被伪造;trace 经采样后求和必然失真。(06)
- 观测数据本身需要治理。 脱敏、访问控制、保留期,三项都不能用默认值 —— trace 库的权限模型通常比业务数据库松得多。(04)
← 回到 专题索引 · Agent Infra 板块总览